package main

import "fmt"

// 切片（slice）
func main1() {
	var a []string
	var b []string

	//在定义同时初始化
	var c = []bool{false, true}
	fmt.Println(a)
	fmt.Println(b)
	fmt.Println(c)
}
func main() {
	//1.基于数组得到切片
	a := [5]int{55, 56, 57, 58, 59}
	b := a[1:4] //左闭右开
	fmt.Println(b)
	fmt.Println(len(b))
	fmt.Println(cap(b))
	fmt.Printf("%T\n", b)

	//2. 切片再次切片
	c := b[:len(b)]
	fmt.Println(c)
	fmt.Printf("%T\n", c)

	//3.make函数构造切片
	d := make([]int, 5, 10)
	//make(类型，长度，容量）
	//如果make(类型,congdu
	//长度是是元素的个数，容量是元素的最大量
	fmt.Println(d)
	fmt.Println(len(d)) //长度
	fmt.Println(cap(d)) //容量
	fmt.Printf("%T\n", d)

	//容量是从起始位置开始进行切割，一直到最后的长都就是容量，其实指的就是底层的数组
	//长度是指定范围的，切割的范围
	//切片本质就是一个指向原数组的指针
}

//我的理解;
//cap也就是底层数组的指针位置（开始切割）一直到数组的最后
//len值得是切割的范围
